C++ difference with C

C와 C++의 차이점
    C++ hello world
#include <iostream> //similar with stdio.h
using namespace std;
int main(void){
cout << "Hello World!" << endl;
system("pause");
return 0;
}
iostream
c++ 표준 입출력 라이브러리이다.
c++에서는 .h를 붙이지 않는다.

c에서는 printf(), scanf()함수에서 형식 지정자를 적어주어야 했으나,
c++에서는 형식 지정자를 넣어주지 않아도 변수 타입에 맞게 적절히 입출력 해준다.
#include <iostream>
#include <string>
int main(void){
std::string input;
std::cin >> input;
std::cout << input << std::endl;
system("pause");
return 0;
}
c++ 기본 입출력 라이브러리에서는 연산자 >>와 <<를 제공한다.
이를 활용하면 모든 기본 자료형을 입출력할 수 있다.
특히, 입력을 받는 연산자 >>는 공백문자(Space, Enter, Tab)을 기준으로 입력을 받는다.

endl 과 \n의 차이점
endl은 출력 버퍼를 비워주는 과정이 포함되어 있기 때문에 동작속도가 더 느리다.
C++의 네임스페이스(Namespace)
특정 영역에 이름을 설정할 수 있도록 하는 문법이다. 네임스페이스는 서로 다른 개발자가 공동으로 프로젝트를 진행할 때,
각자 개발한 모듈을 합칠 수 있도록 해준다.
#include <iostream>
namespace A{
void function(){
std::cout<<"A Namespace"<<std::endl;
}
}
namespace B{
void function(){
std::cout<<"B Namespace"<<std::endl;
}
}
namespace C{
void function(){
std::cout<<"C Namespace"<<std::endl;
}
}
int main(void){
A::function();
B::function();
system("pause");
return 0;
}
using 키워드를 사용하면, 표준 라이브러리(std)를 모두 사용하도록 처리할 수 있다.
#include <iostream>
#include <string>
using namespace std;
int main(void){
string input;
cin >> input;
cout << input << endl;
system("pause");
return 0;
}
c++의 string 자료형
c와 달리 c++은 기본적으로 표준 문자열 자료형을 제공한다.
string 헤더 파일에 정의되어 있다.

C: char arr[SIZE];
C++: string s;

string은 클래스로 구성되어 있기 때문에 size와 같은 내장함수를 이용할 수 있다.
#include <iostream>
#include <string>
using namespace std;
int main(void){
string input;
cin >> input;
for(int i=0;i<input.size();i++){
cout<<input[i]<< '\n';
}
system("puase");
return 0;
}
getline
getline 함수를 이용하면 기존에 공백을 기준으로 입력을 받은 cin을 공백을 포함하여 한 줄을 모두 문자열 형태로 입력 받을 수 있다.
#include <iostream>
#include <string>
using namespace std;
int main(void){
string input;
getline(cin, input);
for(int i=0;i<input.size();i++){
cout<<input[i]<<'\n';
}
system("puase");
return 0;
}
string은 클래스 내부 함수를 이용해 다른 자료형으로의 변환이 간편하다.
to_string();        // int to string
stoi();        // string to int
#include <iostream>
#include <string>
using namespace std;
int main(void){
int i=123;
string s=to_string(i);
cout<<"->: "<<s<<endl;
s="456";
i=stoi(s);
cout<<"->: "<<i<<endl;
system("pause");
return 0;
}
C++의 동적 할당
C++에서는 간단하게 new를 이용해서 동적할당을 하고 delete를 통해서 할당 해제할 수 있다.
#include <iostream>
#define SIZE 100
using namespace std;
int *arr;
int main(void){
arr=new int[SIZE];
for(int i=0;i<SIZE; i++){
arr[i]=i;
}
for(int i=0;i<SIZE; i++){
cout<<arr[i]<<' ';
}
delete arr;
system("pause");
return 0;
}
new int(10); // int 10
C++은 객체 지향 패러다임을 따르고 있는 언어이지만 C언어는 절차적 프로그래밍 언어이다.
즉 C++은 객체 중심의 언어 C는 함수 기반의 언어이다.

C++는 C의 구조체 Struct 대신에 Class를 이용하며
C++에서는 공식적으로 예외처리(Exception Handling) 기술을 지원한다.